/*
 * Copyright (c) 2012-2017 Red Hat, Inc.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   Red Hat, Inc. - initial API and implementation
 */
package org.eclipse.che.ide.workspace.start;

import com.google.inject.ImplementedBy;
import org.eclipse.che.ide.api.mvp.View;
import org.eclipse.che.ide.workspace.start.workspacewidget.WorkspaceWidget;

/**
 * Provides methods which allows selecting and starting available workspaces.
 *
 * @author Dmitry Shnurenko
 */
@ImplementedBy(StartWorkspaceViewImpl.class)
interface StartWorkspaceView extends View<StartWorkspaceView.ActionDelegate> {

  /**
   * Changes enabling button.
   *
   * @param enable <code>true</code> button is enable, <code>false</code> button is disable
   */
  void setEnableStartButton(boolean enable);

  /**
   * Adds workspace widget to panel to display it.
   *
   * @param workspace widget which will be added
   */
  void addWorkspace(WorkspaceWidget workspace);

  /**
   * Sets workspace name to text box.
   *
   * @param wsName name which will be set
   */
  void setWsName(String wsName);

  /** Shows dialog window. */
  void show();

  /** Hides dialog window. */
  void hide();

  /** Clears panel which contains workspace widgets. */
  void clearWorkspacesPanel();

  interface ActionDelegate {
    void onStartWorkspaceClicked();

    void onCreateWorkspaceClicked();
  }
}
